package tt.dz.egobus.servicemanager.service;

import tt.dz.egobus.api.managerservice.manager.DistributeDriverTask;
import tt.dz.egobus.api.managerservice.manager.RequestTask;
import tt.dz.egobus.bean.BusinessStatus;
import tt.dz.egobus.servicemanager.business.key.BusinessCache;
import tt.dz.egobus.servicemanager.business.point.BusPoint;

/**
 * @author Anson
 * @date 17-3-27
 * @name 业务请求缓存处理</br>
 * 主要服务请求缓存，处理锁的控制
 * @since 1.0.3
 */
public interface BusinessCacheService {

    /**
     * @param businessCache 当前的缓存
     * @author Anson
     * @date 17-3-27
     * @name 更新当前业务缓存值
     * @since 1.0.3
     */
    void updateBusiness(BusinessCache businessCache);

    /**
     * @param businessId
     * @param status
     * @author Anson
     * @date 17-8-9
     * @name 更改当前业务缓存的状态
     * @since 1.0.6
     */
    void updateStatus(String businessId, BusinessStatus status);

    /**
     * @param businessId 业务主键
     * @author Anson
     * @date 17-3-27
     * @name 获取业务缓存对象
     * @since 1.0.3
     */
    BusinessCache get(String businessId);


    /**
     * @param businessId 业务主键
     * @author Anson
     * @date 17-3-27
     * @name 删除业务缓存
     * @since 1.0.3
     */
    void deleteBusiness(String businessId);

    /**
     * @param requestTask          请求信息
     * @param distributeDriverTask 任务分发
     * @param busPoints            当前有效的车地理位置
     * @author Anson
     * @date 17-3-27
     * @name 更新某一个业务请求
     * @since 1.0.3
     */
    void updateBusiness(RequestTask requestTask, DistributeDriverTask distributeDriverTask, BusPoint[] busPoints);
}
